home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / IEFARND.SA < prev    next >
Text File  |  1989-08-30  |  5KB  |  98 lines

  1.          TTL       IEEE FORMAT EQUIVALENT ASCII ROUND ROUTINE (IEFARND)
  2. ****************************************
  3. * (C) COPYRIGHT 1981 BY MOTOROLA INC.  *
  4. ****************************************
  5.  
  6. ***********************************************
  7. * IEFARND - IEEE FORMAT EQUIVALENT ASCII ROUND*
  8. *                                             *
  9. *  THIS ROUTINE IS NORMALLY CALLED AFTER THE  *
  10. *  'IEFFPA' FLOAT TO ASCII ROUTINE AND ACTS   *
  11. *  UPON ITS RESULTS.                          *
  12. *                                             *
  13. *  INPUT:  D6 - ROUNDING MAGNITUDE IN BINARY  *
  14. *               AS EXPLAINED BELOW.           *
  15. *          D7 - BINARY REPRESENTATION OF THE  *
  16. *               BASE 10 EXPONENT.             *
  17. *          SP ->  RETURN ADDRESS AND OUTPUT   *
  18. *                 FROM IEFFPA ROUTINE         *
  19. *                                             *
  20. *  OUTPUT: THE ASCII VALUE ON THE STACK IS    *
  21. *          CORRECTLY ROUNDED                  *
  22. *                                             *
  23. *          THE CONDITION CODES ARE UNDEFINED  *
  24. *                                             *
  25. *          ALL REGISTERS TRANSPARENT          *
  26. *                                             *
  27. *     THE ROUNDING PRECISION REPRESENTS THE   *
  28. *     POWER OF TEN TO WHICH THE ROUNDING WILL *
  29. *     OCCUR.  (I.E. A -2 MEANS ROUND THE DIGIT*
  30. *     IN THE HUNDREDTH POSITION FOR RESULTANT *
  31. *     ROUNDING TO TENTHS.)  A POSITIVE VALUE  *
  32. *     INDICATES ROUNDING TO THE LEFT OF THE   *
  33. *     DECIMAL POINT (0 IS UNITS, 1 IS TENS    *
  34. *     E.T.C.)                                 *
  35. *                                             *
  36. *     THE BASE TEN EXPONENT IN BINARY IS D7   *
  37. *     FROM THE 'IEFFPA' ROUTINE OR COMPUTED BY*
  38. *     THE CALLER.                             *
  39. *                                             *
  40. *     THE STACK CONTAINS THE RETURN ADDRESS   *
  41. *     FOLLOWED BY THE ASCII NUMBER AS FROM    *
  42. *     THE 'IEFFPA' ROUTINE.  SEE THE          *
  43. *     DESCRIPTION OF THAT ROUTINE FOR THE     *
  44. *     REQUIRED FORMAT.                        *
  45. *                                             *
  46. *  EXAMPLE:                                   *
  47. *                                             *
  48. *  INPUT PATTERN '+.98765432+01' = 9.8765432  *
  49. *                                             *
  50. *     ROUND +1 IS +.00000000+00 =  0.         *
  51. *     ROUND  0 IS +.10000000+02 = 10.         *
  52. *     ROUND -1 IS +.10000000+02 = 10.         *
  53. *     ROUND -2 IS +.99000000+01 =  9.9        *
  54. *     ROUND -3 IS +.98800000+01 =  9.88       *
  55. *     ROUND -6 IS +.98765400+01 =  9.87654    *
  56. *                                             *
  57. *  NOTES:                                     *
  58. *     1) IF THE ROUNDING DIGIT IS TO THE LEFT *
  59. *        OF THE MOST SIGNIFICANT DIGIT, A ZERO*
  60. *        RESULTS.  IF THE ROUNDING DIGIT IS TO*
  61. *        THE RIGHT OF THE LEAST SIGNIFICANT   *
  62. *        DIGIT, THEN NO ROUNDING OCCURS.      *
  63. *     2) ROUNDING IS IGNORED FOR NAN'S (NOT-  *
  64. *        A-NUMBER) AND INFINITIES.            *
  65. *     3) ROUNDING IS HANDY FOR ELIMINATING THE*
  66. *        DANGLING '999...' PROBLEM COMMON WITH*
  67. *        FLOAT TO DECIMAL CONVERSIONS.        *
  68. *     4) POSITIONS FROM THE ROUNDED DIGIT AND *
  69. *        TO THE RIGHT ARE SET TO ZEROES.      *
  70. *     5) THE EXPONENT MAY BE AFFECTED.        *
  71. *     6) ROUNDING IS FORCED BY ADDING FIVE.   *
  72. *     7) THE BINARY EXPONENT IN D7 MAY BE     *
  73. *        PRE-BIASED BY THE CALLER TO PROVIDE  *
  74. *        ENHANCED EDITING CONTROL.            *
  75. *     8) THE RETURN ADDRESS IS REMOVED FROM   *
  76. *        THE STACK UPON EXIT.                 *
  77. ***********************************************
  78.          PAGE
  79. IEFARND  IDNT      1,1       IEEE FORMAT EQUIVALENT ASCII ROUND
  80.  
  81.          XDEF      IEFARND   ENTRY POINT
  82.  
  83.          XREF      9:FFPARND FAST FLOATING POINT ROUND ROUTINE
  84.  
  85.          SECTION   9
  86.  
  87. IEFARND  CMP.B     #'>',4(SP)          ? POSITIVE INFINITY CONVERTED
  88.          BEQ.S     IEFRTN              IGNORE ROUNDING IF SO
  89.          CMP.B     #'<',4(SP)          ? MINUS INFINITY CONVERTED
  90.          BEQ.S     IEFRTN              IGNORE ROUNDING IF SO
  91.          CMP.B     #'.',4(SP)          ? NAN (NOT-A-NUMBER) CONVERTED
  92.          BNE       FFPARND             NO, IS NORMAL NUMERIC CONVERSION
  93. *                                                CONTINUE WITH FFP ROUTINE
  94. IEFRTN   RTS                           RETURN TO CALLER AND IGNORE ROUNDING
  95.  
  96.          END
  97.  
  98.